/**
 * @author 03010570
 * @date 2020/10/21
 * describe:    LeetCode : 925 、长按键入 https://leetcode-cn.com/problems/long-pressed-name/
 */
public class LeetCode_925 {
    public static void main(String[] args) {
//        System.out.println(isLongPressedName("alex","allex"));
        System.out.println(isLongPressedName("alex","allexr"));
//        System.out.println(isLongPressedName("saeed","ssaaedd"));
//        System.out.println(isLongPressedName("leelee","lleeelee"));
//        System.out.println(isLongPressedName("laiden","laiden"));
//        System.out.println(isLongPressedName("pyplrz","ppyypllr"));
    }

    /**
     * 时间复杂度： O(N+M)
     * 空间复杂度：O(1)
     *
     * 双指针法，一个快指针，一个慢指针，
     * typed 为 快指针
     * name 为 慢指针
     * typed [0] 和 name[0] 比，相同，typed[1] 和 name[0] 比，相同，typed[2] 和 name[0] 比，
     * 不相同，typed[1] 和 name[1] 比，不相同，返回false,
     * name 的指针 +1 的时候，比较的时候进行判断， 不等直接返回 false
     * typed 指针 +1 的时候，相同，typed 继续相加，不相同， name ++
     *
     * @param name
     * @param typed
     * @return
     */
    public static boolean isLongPressedName(String name, String typed) {
        int slow = 0, fast = 0;
        while (fast < typed.length()) {
            if(slow < name.length() && typed.charAt(fast) == name.charAt(slow)){
                fast++;
                slow++;
            }else if(fast >0 && typed.charAt(fast) == typed.charAt(fast-1)){
                fast++;
            }else{
                return false;
            }
        }
        return slow == name.length() ;
    }
}
